package com.cskaoyan._02extends._03conversion;

/**
 * @description:
 * @author: 景天
 * @date: 2023/2/8 11:32
 **/
/*
基本数据类型存在数据类型的转换
    自动类型转换  小-->大范围
    强制类型转换  大范围--->小范围

引用数据类型的转换
    转换的前提?
        --->存在继承关系,继承打破了Java引用数据类型的类型限制,
        有了继承, Java出现了引用数据类型的类型转换.
    转换的是什么?
        引用数据类型 = 引用 + 对象
        对象是不可以转换的,只能说是改变对象的状态(修改值)
        转换的是引用的类型

分类:
    自动类型转换  (向上转型)
        自动发生的,不用写代码
    强制类型转换  (向下转型)
        需要手动写代码
        语法: 子类类型 对象名 = (子类类型)父类的引用

 */
public class Demo {
    public static void main(String[] args) {
        Cat cat = new Cat();
        // Dog dc = cat;
        Animal animal = cat;
        // 上下是等价的
        Animal animal12 = new Cat();

        Animal animal3 = new Animal();
        // 强制类型转换,需要写代码(向下转型)
        // java.lang.ClassCastException
        // 进行强制类型转换的时候可能会转换不成功,有异常出现
        Dog dog = (Dog) animal3;

    }
}

class Animal{

}

class Cat extends Animal{

}
class Dog extends Animal{

}